<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>95_深拷贝和浅拷贝</title>
		<script>
			/* 
			浅拷贝(shallow copy)
				-通常对对象的拷贝都是浅拷贝。
				-浅拷贝顾名思义，只对对象的浅层进行复制(只复制一层)。
				-如果对象中存储的数据是原始值，那么拷贝的深浅是不重要。比如94小节说的对数组复制。
				-浅拷贝只会对对象本身进行复制，不会复制对象中的属性(或元素)I
				
			深拷贝(deep copy)
				-深拷贝指不仅复制对象本身，还复制对象中的属性和元素。
				-因为性能问题，通常情况不太使用深拷贝。
			 */
			
			//创建一个数组
			const arr=[{name:"孙悟空"},{name:"猪八戒"}];
			const arr2=arr.slice();
			console.log(arr===arr2);//false
			console.log(arr[0]===arr2[0]);//true 因为是浅拷贝，对象的属性并没有拷贝过去。
			//浅拷贝有个问题：
			arr[0].name="唐僧";//修改arr的第一个元素的名字，arr2数组也发生了改变。
			console.log(arr2[0].name);
			
			const arr3 = structuredClone(arr) //专门用来深拷贝的方法
			console.log(arr===arr3);//false
			console.log(arr[0]===arr3[0]);//false
		</script>
	</head>
	<body>
	</body>
</html>